package event

import (
	"sjy/customcmd/src/constants"
	"sjy/customcmd/src/entity"
	"sjy/customcmd/src/utils"
)

var GlobalConfig *entity.MainConfig
var LocalConfig *entity.MainConfig

func LoadGlobalConfig() {
	utils.LoadYamlError(constants.GlobalConfigPath, &GlobalConfig, func(err error) {
		utils.Info("配置文件可能不符合yaml语法！: %v", err)
	})
	if GlobalConfig == nil {
		utils.InfoDev("GlobalConfig 配置文件丢失。")
	}
}

func LoadLocalConfig() {
	utils.LoadYamlError(constants.LocalConfigPath, &LocalConfig, func(err error) {
		utils.Info("配置文件可能不符合yaml语法！: %v", err)
	})
	if LocalConfig == nil {
		utils.InfoDev("LocalConfig 配置文件丢失。")
	}
}

func InitConfig() {
	LoadGlobalConfig()
	LoadLocalConfig()
}

// func Demo[T any](getField func(*MainConfig) T, useGlobal bool) T
// func Demo(getField func(*MainConfig) interface{})
func GetConfig(getField func(*entity.MainConfig) entity.FieldInterface) entity.FieldInterface {
	if GlobalConfig == nil && LocalConfig == nil {
		return nil
	}
	if GlobalConfig == nil {
		return getField(LocalConfig)
	}
	if LocalConfig == nil {
		return getField(GlobalConfig)
	}
	_global := getField(GlobalConfig)
	_local := getField(LocalConfig)
	return _global.Compare(_local)
}
